草庐IT

Android JSONObject 与 GSON

全部标签

java - 如何在 Gson 序列化中保持字段顺序

似乎Gson.toJson(Objectobject)生成带有随机分布的对象字段的JSON代码。有没有办法以某种方式修复字段顺序?publicclassFoo{publicStringbar;publicStringbaz;publicFoo(Stringbar,Stringbaz){this.bar=bar;this.baz=baz;}}Gsongson=newGson();StringjsonRequest=gson.toJson(newFoo("bar","baz"));字符串jsonRequest可以是:{"bar":"bar","baz":"baz"}(正确){"baz":"

java - 使用 gson 解析嵌套的 JSON

{"Response":{"MetaInfo":{"Timestamp":"2011-11-21T14:55:06.556Z"},"View":[{"_type":"SearchResultsViewType","ViewId":0,"Result":[{"Relevance":0.56,"MatchQuality":{"Country":1,"State":1,"County":1,"City":1,"PostalCode":1},"Location":{"LocationType":"point","DisplayPosition":{"Latitude":50.1105,"Lon

java - 创建 GSON 对象

如何使用GoogleGson创建json对象?以下代码创建一个类似于{"name":"john"}的json对象JsonObjectjsonObject=newJsonObject();jsonObject.addProperty("name","john");如何创建一个像这样的json对象?{"publisher":{"name":"john"}} 最佳答案 JsonObjectinnerObject=newJsonObject();innerObject.addProperty("name","john");JsonObjec

java - Gson 序列化多态对象列表

我正在尝试使用Gson将涉及多态性的对象序列化/反序列化为JSON。这是我的序列化代码:ObixBaseObjlobbyObj=newObixBaseObj();lobbyObj.setIs("obix:Lobby");ObixOpbatchOp=newObixOp();batchOp.setName("batch");batchOp.setIn("obix:BatchIn");batchOp.setOut("obix:BatchOut");lobbyObj.addChild(batchOp);Gsongson=newGson();System.out.println(gson.toJ

java - 如何在反序列化 JSON 响应时使用 Gson 处理 NumberFormatException

我正在读取带有Gson的JSON响应,它有时会返回NumberFormatException,因为预期的int值设置为空字符串。现在我想知道处理这种异常的最佳方法是什么。如果该值为空字符串,则反序列化应为0。预期的JSON响应:{"name":"Test1","runtime":90}但有时运行时是一个空字符串:{"name":"Test2","runtime":""}java类如下所示:publicclassFoo{privateStringname;privateintruntime;}反序列化是这样的:Stringinput="{\n"+"\"name\":\"Test\",\n

java - Gson:@Expose 与 @SerializedName

关于Gson,@Expose和@SerializedName("stringValue")有什么区别? 最佳答案 即使为时已晚,我也想回答这个问题。要解释它我们必须知道什么是serialization和deserialization。serialization正在将object转换为jsonstring并且deserialization正在将jsonstring转换为对象。假设我们有一个没有注释的User类。publicclassUser{privateStringuserName;privateIntegeruserAge;pub

java - 如何为 Gson 编写自定义 JSON 反序列化器?

我有一个Java类,用户:publicclassUser{intid;Stringname;TimestampupdateDate;}我收到一个包含来自网络服务的用户对象的JSON列表:[{"id":1,"name":"Jonas","update_date":"1300962900226"},{"id":5,"name":"Test","date_date":"1304782298024"}]我曾尝试编写自定义反序列化器:@OverridepublicUserdeserialize(JsonElementjson,Typetype,JsonDeserializationContext

java - Gson 是否必须使用默认的无参数构造函数?

Gsonuserguide声明我们应该为任何类定义默认的无参数构造函数以正确使用Gson。更重要的是,在javadoc在Gson的InstanceCreator类上说,如果我们尝试反序列化缺少默认构造函数的类的实例,则会引发异常,我们应该在这种情况下使用InstanceCreator.但是,我尝试在缺少默认构造函数的类中使用Gson进行测试,并且序列化和反序列化都可以正常工作。这是反序列化的一段代码。一个没有非参数构造函数的类:publicclassMushroom{privateStringname;privatedoublediameter;publicMushroom(Strin

json - Gson 可选和必填字段

应该如何处理Gson以及必填字段和可选字段?由于所有字段都是可选的,因此我不能根据响应json是否包含某些键而使我的网络请求失败,Gson将简单地将其解析为null。我使用的方法gson.fromJson(json,mClassOfT);例如,如果我有以下json:{"user_id":128591,"user_name":"TestUser"}还有我的类(class):publicclassUser{@SerializedName("user_id")privateStringmId;@SerializedName("user_name")privateStringmName;pub

java - Gson:有没有更简单的方法来序列化 map

Gson项目中的This链接似乎表明我必须执行以下操作才能将类型化的Map序列化为JSON:publicstaticclassNumberTypeAdapterimplementsJsonSerializer,JsonDeserializer,InstanceCreator{publicJsonElementserialize(Numbersrc,TypetypeOfSrc,JsonSerializationContextcontext){returnnewJsonPrimitive(src);}publicNumberdeserialize(JsonElementjson,Typet